/**
 * Copyright 2008-2009. Chongqing Communications Industry Services Co.,Ltd Information Technology Branch. All rights
 * reserved. <a>http://www.cqcis.com</a>
 */
package com.cqcis.uip.base.framework.core;

import java.util.List;

import org.springframework.osgi.extender.internal.dependencies.startup.ContextState;


/**
 * 服务状态管理
 * 
 * @author huangmy
 * @date   2008-4-7
 */
public interface StateManage {
    /**
     * 修改服务状态
     * 
     * @param bundleId
     * @param state
     */
    public void updateState(long bundleId, ContextState state);
    
    /**
     * 修改服务状态
     * 
     * @param bundleId
     * @param state
     * @param message
     */
    public void updateState(long bundleId, ContextState state, String message);
    
    /**
     * 修改服务状态
     * 
     * @param bundleId
     * @param state
     * @param message
     * @param t
     */
    public void updateState(long bundleId, ContextState state, String message, Throwable t);
    
    /**
     * 增加状态
     * 
     * @param bundleId
     * @param state
     */
    public void addState(long bundleId, ServiceState state);
    
    /**
     * 删除状态
     * 
     * @param bundleId
     */
    public void remove(long bundleId);
    
    /**
     * 对应bundle的服务状态
     * 
     * @param bundleId
     * @return
     */
    public ServiceState getState(long bundleId);
    
    /**
     * 所有的服务状态
     * 
     * @return
     */
    public List<ServiceState> getStates();
    
    /**
     * 等待某个状态
     * 
     * @param state
     */
    public void waitWithStartedState(long bundleId, long milliseconds);
}
